<?php
class  Front_Model_DbTable_News extends  Kieumau_Db_Common
{
    protected $_name = 'news_language' ;
	
    public function getNewsOnline(){
    	try {
    		$db = $this->_db;
    		$db->setFetchMode ( Zend_Db::FETCH_ASSOC );
    		
    		$objLanguage = $this->getAll('language', '`default` = 1');
    		
    		$lang = new Zend_Session_Namespace ( 'defaultLanguage' );
//Đa ngôn ngữ    		
    		//Đọc session để lấy ra ngôn ngữ mặc định
    		if(empty($lang->defaultLanguage)){//Chưa có session thì tạo mới
	    		$defaultLanguage 			= $objLanguage[0];
	    		$this->defaultLanguageId 	= $defaultLanguage['id'];
	    		
	    		$lang->defaultLanguage 		= $defaultLanguage['code'];//Ghi code vào session
	    		$lang->defaultLanguageId 	= $defaultLanguage['id'];//Ghi id vào session
	    	
	    		require_once('Zend/Session.php');
	    		$seconds  = 60 * 60 * 24 * 7; // 7 ngày
	    		Zend_Session::RememberMe($seconds);
	    	}else{//Có session thì lấy trong session ra
	    		$this->defaultLanguageId = $lang->defaultLanguageId;
	    	}
//END Đa ngôn ngữ
    		
    		
    		//Chú ý: viết a* đứng sau để id thu được là id của a
    		$sql = 'SELECT b.*, a.*
    				FROM news a
    				INNER JOIN news_language b
    					ON a.id = b.news_id
					WHERE a.status = 1
    				AND b.lang_id = '.$this->defaultLanguageId.'
    				Order by level';
    		
    		$result = $db->fetchAll ( $sql);
    		return $result;
    	} catch ( Exception $ex ) {
    		echo "Can not get news <br/>Error: " . $ex->getMessage ();
    	}
    }
    
    public function getAllNews(){
    try {
    		$db = $this->_db;
    		$db->setFetchMode ( Zend_Db::FETCH_ASSOC );
    		
    		$objLanguage = $this->getAll('language', '`default` = 1');
    		
    		$lang = new Zend_Session_Namespace ( 'defaultLanguage' );
//Đa ngôn ngữ    		
    		//Đọc session để lấy ra ngôn ngữ mặc định
    		if(empty($lang->defaultLanguage)){//Chưa có session thì tạo mới
	    		$defaultLanguage 			= $objLanguage[0];
	    		$this->defaultLanguageId 	= $defaultLanguage['id'];
	    		
	    		$lang->defaultLanguage 		= $defaultLanguage['code'];//Ghi code vào session
	    		$lang->defaultLanguageId 	= $defaultLanguage['id'];//Ghi id vào session
	    	
	    		require_once('Zend/Session.php');
	    		$seconds  = 60 * 60 * 24 * 7; // 7 ngày
	    		Zend_Session::RememberMe($seconds);
	    	}else{//Có session thì lấy trong session ra
	    		$this->defaultLanguageId = $lang->defaultLanguageId;
	    	}
//END Đa ngôn ngữ
    		
    		
    		//Chú ý: viết a* đứng sau để id thu được là id của a
    		$sql = 'SELECT b.*, a.*
    				FROM news a
    				INNER JOIN news_language b
    					ON a.id = b.news_id
					WHERE  b.lang_id = '.$this->defaultLanguageId.'
    				Order by level';
    		
    		$result = $db->fetchAll ( $sql);
    		return $result;
    	} catch ( Exception $ex ) {
    		echo "Can not get news <br/>Error: " . $ex->getMessage ();
    	}
    }
    
    public function getNewsDetail($id){
    	try {
    		$db = $this->_db;
    		$db->setFetchMode ( Zend_Db::FETCH_ASSOC );
    	
    		$objLanguage = $this->getAll('language', '`default` = 1');
    	
    		$lang = new Zend_Session_Namespace ( 'defaultLanguage' );
//BEGIN ĐA NGÔN NGỮ
    		//Đọc session để lấy ra ngôn ngữ mặc định
    		if(empty($lang->defaultLanguage)){//Chưa có session thì tạo mới
    			$defaultLanguage 			= $objLanguage[0];
    			$this->defaultLanguageId 	= $defaultLanguage['id'];
    			 
    			$lang->defaultLanguage 		= $defaultLanguage['code'];//Ghi code vào session
    			$lang->defaultLanguageId 	= $defaultLanguage['id'];//Ghi id vào session
    	
    			require_once('Zend/Session.php');
    			$seconds  = 60 * 60 * 24 * 7; // 7 ngày
    			Zend_Session::RememberMe($seconds);
    		}else{//Có session thì lấy trong session ra
    			$this->defaultLanguageId = $lang->defaultLanguageId;
    		}
//END Đa ngôn ngữ
    	
    	
    		//Chú ý: viết a* đứng sau để id thu được là id của a
    		$sql = 'SELECT b.*, a.*
    				FROM news a
    				INNER JOIN news_language b
    					ON a.id = b.news_id
					WHERE a.status = 1
    				AND a.id = ?
    				AND b.lang_id = ?
    				Order by level';
    	
    		$result = $db->fetchAll ( $sql, array($id, $this->defaultLanguageId));
    		if(!empty($result))
    			return $result[0];
    		return $result;
    	} catch ( Exception $ex ) {
    		echo "Can not get news <br/>Error: " . $ex->getMessage ();
    	} 	
    
    }
    
	public function searchJob($formData = array()){
		
    	try {
			$sql = 'SELECT a.id, title, b.companyname, c.name as location, deadline
					FROM job a INNER JOIN employer b
						ON a.employer_id = b.id
					INNER JOIN province c
						 ON a.province_id = c.id
					WHERE 1 = 1';
			    		
			$params2 = array();
			
			if(!empty($formData['keyword'])){//Nếu có gõ từ khóa				
				$sql .= ' AND ( title LIKE ? OR description LIKE ? OR requirement LIKE ? )';
				$params2[] = "%".$formData['keyword']."%";
				$params2[] = "%".$formData['keyword']."%";
				$params2[] = "%".$formData['keyword']."%";
			}
			
			//5 select box					
			foreach($formData['job'] as $key=>$oneColumn){
				if($oneColumn != 0){
					$sql .= " AND a.$key = ?";
					$params2[] = $oneColumn;
				}
			}
			
    		$db = $this->_db;
    		$db->setFetchMode ( Zend_Db::FETCH_ASSOC );			
    		$result = $db->fetchAll ( $sql, $params2);
    		return $result;			
    	} catch ( Exception $ex ) {				
    		echo "Can not search job <br/>Error: " . $ex->getMessage ();
    	}
    }
	
	public function getJob($jobId){
		try {
			//$sql = 'SELECT a.id, a.title, a.description, a.requirement, a.deadline, a.expire_date, b.id, b.companyname, b.companyprofile, b.company_description, 	b.contactname, c.name as workLocation, d.name as companySize
			$sql = 'SELECT a.id, a.title, a.viewcount, a.description, a.requirement, a.deadline, a.expire_date, b.companyname, b.companyprofile, b.company_description, 	b.contactname, c.name as workLocation, d.name as companySize
					FROM `job` a INNER JOIN  `employer` b
						ON a.employer_id  = b.id
					INNER JOIN `province` c
						ON a.province_id = c.id
					INNER JOIN `company_size` d
						ON b.companysize_id = d.id
					WHERE a.id = ?';
			$this->_db->setFetchMode(Zend_Db::FETCH_ASSOC);
			
			$result = $this->_db->fetchAll ( $sql, $jobId );			
			if(!empty($result))
				return $result[0];
			return $result;
		} catch ( Exception $ex ) {
			echo "Error: " . $ex->getMessage ();
			exit ();
		}
	}
	
	public function checkExists($data = array()){
		try {
			$sql = 'SELECT * FROM `saved_job` WHERE employee_id = ? AND employer_id = ?  AND job_id = ?';
			$this->_db->setFetchMode(Zend_Db::FETCH_ASSOC);			
			$result = $this->_db->fetchAll ( $sql, $data);			
			return $result;
		} catch ( Exception $ex ) {
			//echo "sql la :".$sql."<br/>";
			echo "Can not check exists saved job <br/> Error: " . $ex->getMessage ();
			exit ();
		}
	}
	
	public function checkApplyExists($data = array()){
		try{
			$sql = 'SELECT * FROM `saved_job` WHERE employee_id = ? AND employer_id = ?  AND job_id = ?';
			$this->_db->setFetchMode(Zend_Db::FETCH_ASSOC);			
			$result = $this->_db->fetchAll ( $sql, $data);			
			return $result;
		}catch(Exception $ex){
			echo "<br/> Can not check exists for applied job, <br/> Error: ".$ex->getMessage();
			exit();
		}
	}
	
	public function updateApplyStatus($id){
		try{
			$data = array('applied'=>1,'applied_date'=>date ( 'Y-m-d' ));
			$this->_db->update ('saved_job', $data,'id = '.$id);			
		}catch(Exception $ex){
			echo "<br/> Can not update status for apply job, <br/> Error: ".$ex->getMessage();
			exit();
		}
	}
	
	public function increaseViewCount($jobId){
		
    	try{
			$sql = "select viewcount from `job` where id = ?";
			$db = $this->_db;
			$db->setFetchMode ( Zend_Db::FETCH_ASSOC );
			$viewcount = $db->fetchAll ( $sql,$jobId);
    		$data = array('viewcount'=>$viewcount[0]['viewcount']+1);
			
			$this->_db->update ('job', $data,'id = '.$jobId);	
			
    	}catch(Exception $ex){
    		echo '<br/>Can not update view count for job, <br/> '.$ex->getMessage();
    		exit;	
    	}
    }
}












